<?php
namespace ZN\XMLManipulation;

interface XMLInterface
{
	//----------------------------------------------------------------------------------------------------
	//
	// Yazar      : Ozan UYKUN <ozanbote@windowslive.com> | <ozanbote@gmail.com>
	// Site       : www.zntr.net
	// Lisans     : The MIT License
	// Telif Hakkı: Copyright (c) 2012-2016, zntr.net
	//
	//----------------------------------------------------------------------------------------------------

	//----------------------------------------------------------------------------------------------------
	// Version		                                                                          
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML belgesinin versiyonunu oluşturur.				 				                                     
	//  
	// @param  string	$version -> 1.0
	// @return this
	//          																				  
	//----------------------------------------------------------------------------------------------------
	public function version($version);
	
	//----------------------------------------------------------------------------------------------------
	// Encoding		                                                                          
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML belgesinin kodlama türünü belirtir.			 				                                       
	//  
	// @param  string	$encoding -> UTF-8
	// @return this
	//        																				  
	//----------------------------------------------------------------------------------------------------
	public function encoding($encoding);

	
	//----------------------------------------------------------------------------------------------------
	// Build       	                                                                          
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML belgesi oluşturur.							 				                                      
	//  
	// @param  array $data
	// @return string
	//          																				  
	//----------------------------------------------------------------------------------------------------
	public function build($data, $version, $encoding);
	
	//----------------------------------------------------------------------------------------------------
	// Save      	                                                                         
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML dosyası oluşturur.							 				                                      
	// 
	// @param  string 	$file
	// @param  array 	$data
	// @return bool
	//          																				  
	//----------------------------------------------------------------------------------------------------
	public function save($file, $data);
	
	//----------------------------------------------------------------------------------------------------
	// Load               	                                                                  
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML dosyasının içeriğini yükler					 				                                       
	//  
	// @param  string 	$file
	// @return string
	//          																				  
	//----------------------------------------------------------------------------------------------------
	public function load($file);
	
	//----------------------------------------------------------------------------------------------------
	// Parse Array		                                                                          
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML verisini diziye çevirir.							 			                                      
	// 
	// @param  string 	$data
	// @return array
	//          																				  
	//----------------------------------------------------------------------------------------------------
	public function parseArray($data);
	
	//----------------------------------------------------------------------------------------------------
	// Parse Json		                                                                          
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML verisini json'a çevirir.							 			                                      
	//  
	// @param  string 	$data
	// @return array
	//          																				 
	//----------------------------------------------------------------------------------------------------
	public function parseJson($data);
	
	//----------------------------------------------------------------------------------------------------
	// Parse Object
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML verisini object veri türüne çevirir.				 			                                      
	// 
	// @param  string 	$data
	// @return object
	//          																				 
	//----------------------------------------------------------------------------------------------------
	public function parseObject($data);
	
	//----------------------------------------------------------------------------------------------------
	// Parse
	//----------------------------------------------------------------------------------------------------
	//
	// Genel Kullanım: Bir XML verisini object veri türüne çevirir.				 			                                      
	// 
	// @param  string 	$data
	// @return object
	//          																				 
	//----------------------------------------------------------------------------------------------------
	public function parse($xml, $result);
}